/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.far.aus.adm;

import com.far.aus.adm.clas.Auspicio;
import com.far.aus.adm.pdf.AuspicioPdf;
import com.far.aus.adm.clas.Configuracion;
import com.far.lib.BaseDatos;
import com.far.lib.Cadena;
import com.far.lib.Correo;
import com.far.lib.Fecha;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Jorge
 */
public class FrmAuspicioGuardar extends HttpServlet {

    private String _ip = null;
    private int _puerto = 1433;
    private String _db = null;
    private String _usuario = null;
    private String _clave = null;
    
    private String plan_ip = null;
    private int plan_puerto = 1433;
    private String plan_db = null;
    private String plan_usuario = null;
    private String plan_clave = null;
    
    private String _dir = null;
    private String _SVR_MAIL = null;
    private int _fxp = 50;

    public void init(ServletConfig config) throws ServletException
    {
        this._ip = config.getServletContext().getInitParameter("_IP");
        this._puerto = Integer.parseInt(config.getServletContext().getInitParameter("_PUERTO"));
        this._db = config.getServletContext().getInitParameter("_DB");
        this._usuario = config.getServletContext().getInitParameter("_USUARIO");
        this._clave = config.getServletContext().getInitParameter("_CLAVE");
        
        this.plan_ip = config.getServletContext().getInitParameter("PLAN_IP");
        this.plan_puerto = Integer.parseInt(config.getServletContext().getInitParameter("PLAN_PUERTO"));
        this.plan_db = config.getServletContext().getInitParameter("PLAN_DB");
        this.plan_usuario = config.getServletContext().getInitParameter("PLAN_USUARIO");
        this.plan_clave = config.getServletContext().getInitParameter("PLAN_CLAVE");
        
        this._dir = config.getServletContext().getInitParameter("_DIR");
        this._SVR_MAIL = config.getServletContext().getInitParameter("_SVR_MAIL");
        this._fxp = Integer.parseInt(config.getServletContext().getInitParameter("_PAGINACION"));
    }
    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        HttpSession sesion = request.getSession(true);
        String usuario_sesion = (String)sesion.getAttribute("usuario");
        String email_usuario_sesion = (String)sesion.getAttribute("email");
        String cedula_empleado = (String)sesion.getAttribute("cedula");
        String empleado = (String)sesion.getAttribute("empleado");
        
        response.setContentType("text/html;charset=UTF-8");
        response.setHeader("Pragma", "no-cache");
        response.setHeader("Expires", "Mon, 01 Jan 2001 00:00:01 GMT");
        response.setHeader("Cache-Control", "no-store");
        response.setHeader("Cache-Control", "must-revalidate");
        response.setHeader("Cache-Control", "no-cache");
        PrintWriter out = response.getWriter();
        
        String WHERE = request.getParameter("WHERE");
        String p = request.getParameter("p") != null ? request.getParameter("p") : "0";

        String id = request.getParameter("id");
        String num_auspicio = request.getParameter("num_auspicio");
	String fecha_creacion = request.getParameter("fecha_creacion");
	String id_tipo_plan = request.getParameter("id_tipo_plan");
        String ruc = request.getParameter("ruc");
	String proveedor = request.getParameter("proveedor");
        String tipo_documento = request.getParameter("tD");
	String cedula = request.getParameter("cedula");
	String contacto = request.getParameter("contacto");
	String correo = request.getParameter("correo");
	String subtotal = request.getParameter("subtotal");
	String iva = request.getParameter("iva");
	String total = request.getParameter("total");
        String son = request.getParameter("son");
	String dias_para_vencimiento = request.getParameter("dias_para_vencimiento");
	String observacion = request.getParameter("observacion");
        String correo_add = request.getParameter("correo_add");
	String adjunto = request.getParameter("adjunto");
        int limite = Integer.parseInt(request.getParameter("limite"));
        
        subtotal = Cadena.truncar(subtotal);
        iva = Cadena.truncar(iva);
        total = Cadena.truncar(total);
        
        
        String plan_actividad = "";
        String fecha_desde = "";
        String fecha_hasta = "";
        String graba_iva = "";
        String asubtotal = "";
        String aiva = "";
        String atotal = "";
        String id_tipo_forma_pago = "";
        for(int i=0; i<=limite; i++){
            if(request.getParameter("plan_actividad"+i)!=null){
                plan_actividad += request.getParameter("plan_actividad"+i) + "&;";
                fecha_desde += request.getParameter("fecha_desde"+i) + "&;";
                fecha_hasta += request.getParameter("fecha_hasta"+i) + "&;";
                graba_iva += request.getParameter("graba_iva"+i) + "&;";
                asubtotal += request.getParameter("subtotal"+i) + "&;";
                aiva += request.getParameter("iva"+i) + "&;";
                atotal += request.getParameter("total"+i) + "&;";
                id_tipo_forma_pago += request.getParameter("id_tipo_forma_pago"+i) + "&;";
            }
        }
        if(plan_actividad.compareTo("")!=0){
            plan_actividad = plan_actividad.substring(0, plan_actividad.length()-2);
            fecha_desde = fecha_desde.substring(0, fecha_desde.length()-2);
            fecha_hasta = fecha_hasta.substring(0, fecha_hasta.length()-2);
            graba_iva = graba_iva.substring(0, graba_iva.length()-2);
            asubtotal = asubtotal.substring(0, asubtotal.length()-2);
            aiva = aiva.substring(0, aiva.length()-2);
            atotal = atotal.substring(0, atotal.length()-2);
            id_tipo_forma_pago = id_tipo_forma_pago.substring(0, id_tipo_forma_pago.length()-2);
        }
        
        String res = "msg»Nombre de forma de pago ya existe";
        
        Configuracion objConfig = new Configuracion(this._ip, this._puerto, this._db, this._usuario, this._clave);
        String representante = objConfig.getValor("REPRESENTANTE_NOMBRE");
        String cedula_rep = objConfig.getValor("REPRESENTANTE_CEDULA");
        
        String tipo_confirmacion = "m";
        BaseDatos objPlanMercadeo = new BaseDatos(this.plan_ip, this.plan_puerto, this.plan_db, this.plan_usuario, this.plan_clave);
        try{
            ResultSet rs = objPlanMercadeo.consulta("select auspicio_manual from tbl_tipo_plan where id_tipo_plan='"+id_tipo_plan+"'");
            if(rs.next()){
                int auspicio_manual = rs.getString("auspicio_manual")!=null ? rs.getInt("auspicio_manual") : 1;
                tipo_confirmacion = auspicio_manual==1 ? "m" : "a";
                rs.close();
            }
        }catch(Exception e){
            e.printStackTrace();
        }
        
        String logo = this._dir + "_logoFarmaenlace_.jpg";
        String archivoPdf = this._dir + "Auspicio_Nro_" + num_auspicio + ".pdf";
        
        Auspicio objAuspicio = new Auspicio(this._ip, this._puerto, this._db, this._usuario, this._clave);
        if(id.compareTo("-1")==0){
            num_auspicio = objAuspicio.getSecNumAuspicio(Fecha.getAnio());
            archivoPdf = this._dir + "Auspicio_Nro_" + num_auspicio + ".pdf";
            
            if(objAuspicio.insertar(num_auspicio, usuario_sesion, id_tipo_plan, ruc, proveedor, tipo_documento, cedula, contacto, 
               correo, subtotal, iva, total, son, dias_para_vencimiento, observacion, correo_add, adjunto, 
               plan_actividad, fecha_desde, fecha_hasta, graba_iva, asubtotal, aiva, atotal, id_tipo_forma_pago, tipo_confirmacion)){
                
                
                try{
                    ResultSet rsPanActividades = objAuspicio.getPlanActividades(num_auspicio);
                    AuspicioPdf auspiciopdf = new AuspicioPdf();
                    auspiciopdf.generar(logo, archivoPdf, num_auspicio, fecha_creacion, proveedor, ruc, contacto, cedula, representante, cedula_rep, 
                            son, dias_para_vencimiento, observacion, subtotal, iva, total, rsPanActividades, cedula_empleado, empleado);
                }catch(Exception e){
                    res = "msg»" + e.getMessage();
                }
                
                StringBuilder mensaje = new StringBuilder();
                mensaje.append("<p>Estimado <strong>");
                mensaje.append(proveedor);
                mensaje.append("</strong></p>");
                mensaje.append("<p>Por medio de la presente se env&iacute;a adjunto el Convenio de Auspicio Nro. <strong>");
                mensaje.append(num_auspicio);
                mensaje.append("</strong> creado el <strong>");
                mensaje.append(fecha_creacion);
                mensaje.append("</strong> por el usuario ");
                mensaje.append(usuario_sesion);
                mensaje.append(".</p>");
                mensaje.append("<p>Particular que se pone a consideraci&oacute;n para los fines pertinentes.</p>");
                mensaje.append("<p>Atentamente</p>");
                mensaje.append("<p>&nbsp;</p><p>");
                mensaje.append(empleado);
                mensaje.append("<br/>FARMAENLACE CIA LTDA</p>");
                
                List adjuntos = new ArrayList();
                adjuntos.add(archivoPdf);
                if(adjunto.compareTo("")!=0){
                    adjuntos.add(this._dir + adjunto);
                }
                Correo.enviar(this._SVR_MAIL, email_usuario_sesion, correo, correo_add, email_usuario_sesion, 
                        "Se ha creado el convenio de auspicio Nro " + num_auspicio, mensaje, true, adjuntos);
                
                res = "tbl»"+objAuspicio.paginarJSON("vta_auspicio", "num_auspicio as id_auspicio,txt_fecha_creacion,num_auspicio,tipo_plan,proveedor,total,adjunto", WHERE, Integer.parseInt(p), this._fxp)+
                        "^id»-1^fun»_R('vta1');_R('bloq_vta1');aus_auspicio_editar('"+num_auspicio+"');^msg»Información ingresada satisfactoriamente.";
            }else{
                res = "msg»" + objAuspicio.getError();
            }
        }else{
            if(objAuspicio.actualizar(num_auspicio, usuario_sesion, id_tipo_plan, ruc, proveedor, tipo_documento, cedula, contacto, 
                correo, subtotal, iva, total, son, dias_para_vencimiento, observacion, correo_add, adjunto, 
                plan_actividad, fecha_desde, fecha_hasta, graba_iva, asubtotal, aiva, atotal, id_tipo_forma_pago, tipo_confirmacion)){
                
                
                try{
                    ResultSet rsPanActividades = objAuspicio.getPlanActividades(num_auspicio);
                    AuspicioPdf auspiciopdf = new AuspicioPdf();
                    auspiciopdf.generar(logo, archivoPdf, num_auspicio, fecha_creacion, proveedor, ruc, contacto, cedula, representante, cedula_rep, 
                            son, dias_para_vencimiento, observacion, subtotal, iva, total, rsPanActividades, cedula_empleado, empleado);
                }catch(Exception e){
                    res = "msg»" + e.getMessage();
                }
                
                StringBuilder mensaje = new StringBuilder();
                mensaje.append("<p>Estimado <strong>");
                mensaje.append(proveedor);
                mensaje.append("</strong></p>");
                mensaje.append("<p>Por medio de la presente se env&iacute;a adjunto el Convenio de Auspicio Nro. <strong>");
                mensaje.append(num_auspicio);
                mensaje.append("</strong> modificado el <strong>");
                mensaje.append(fecha_creacion);
                mensaje.append("</strong> por el usuario ");
                mensaje.append(usuario_sesion);
                mensaje.append(".</p>");
                mensaje.append("<p>Particular que se pone a consideraci&oacute;n para los fines pertinentes.</p>");
                mensaje.append("<p>Atentamente</p>");
                mensaje.append("<p>&nbsp;</p><p>");
                mensaje.append(empleado);
                mensaje.append("<br/>FARMAENLACE CIA LTDA</p>");
                
                List adjuntos = new ArrayList();
                adjuntos.add(archivoPdf);
                if(adjunto.compareTo("")!=0){
                    adjuntos.add(this._dir + adjunto);
                }
                Correo.enviar(this._SVR_MAIL, email_usuario_sesion, correo, correo_add, email_usuario_sesion, 
                        "Se ha modificado el convenio de auspicio Nro " + num_auspicio, mensaje, true, adjuntos);
                
                res = "tbl»"+objAuspicio.paginarJSON("vta_auspicio", "num_auspicio as id_auspicio,txt_fecha_creacion,num_auspicio,tipo_plan,proveedor,total,adjunto", WHERE, Integer.parseInt(p), this._fxp)+
                            "^fun»_R('vta1');_R('bloq_vta1');^msg»Información guardada satisfactoriamente.";
            }else{
                    res = "msg»" + objAuspicio.getError();
                }
        }
        
        try{
            out.print(res);
        }finally {
            objPlanMercadeo.cerrar();
            objConfig.cerrar();
            objAuspicio.cerrar();
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}
